/**
 * SessionStorage 工具类
 * 提供 sessionStorage 的通用操作方法
 */

/**
 * 存储数据到 sessionStorage
 * @param key 存储的键名
 * @param value 要存储的值
 */
export const setSessionStorage = <T>(key: string, value: T): void => {
  try {
    const serializedValue = JSON.stringify(value);
    sessionStorage.setItem(key, serializedValue);
  } catch (error) {
    console.error("Error saving to sessionStorage:", error);
  }
};

/**
 * 从 sessionStorage 获取数据
 * @param key 存储的键名
 * @returns 存储的值，如果不存在则返回 null
 */
export const getSessionStorage = <T>(key: string): T | null => {
  try {
    const serializedValue = sessionStorage.getItem(key);
    return serializedValue ? JSON.parse(serializedValue) : null;
  } catch (error) {
    console.error("Error reading from sessionStorage:", error);
    return null;
  }
};

/**
 * 从 sessionStorage 删除数据
 * @param key 存储的键名
 */
export const removeSessionStorage = (key: string): void => {
  try {
    sessionStorage.removeItem(key);
  } catch (error) {
    console.error("Error removing from sessionStorage:", error);
  }
};

/**
 * 清空 sessionStorage
 */
export const clearSessionStorage = (): void => {
  try {
    sessionStorage.clear();
  } catch (error) {
    console.error("Error clearing sessionStorage:", error);
  }
};
